/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

//----------------------------------------------------
// The following code was generated by CUP v0.11a beta 20060102
// Wed Dec 20 21:02:26 ART 2006
//----------------------------------------------------

package javax.swing.text.html.parser;

import java_cup.runtime.*;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.math.BigInteger;

import org.apache.harmony.x.swing.internal.nls.Messages;

/** CUP v0.11a beta 20060102 generated parser.
  * @version Wed Dec 20 21:02:26 ART 2006
  */
class ParserCup extends java_cup.runtime.lr_parser {

  /** Default constructor. */
  public ParserCup() {super();}

  /** Constructor which sets the default scanner. */
  public ParserCup(java_cup.runtime.Scanner s) {super(s);}

  /** Production table. */
  protected static final short _production_table[][] = 
    unpackFromStrings(new String[] {
    "\000\070\000\002\002\004\000\002\002\004\000\002\002" +
    "\003\000\002\003\003\000\002\003\003\000\002\003\003" +
    "\000\002\003\003\000\002\003\003\000\002\003\003\000" +
    "\002\003\003\000\002\003\003\000\002\003\003\000\002" +
    "\004\003\000\002\004\003\000\002\004\003\000\002\005" +
    "\004\000\002\032\004\000\002\006\004\000\002\013\003" +
    "\000\002\013\004\000\002\031\004\000\002\007\005\000" +
    "\002\007\004\000\002\011\005\000\002\012\004\000\002" +
    "\012\003\000\002\012\002\000\002\010\006\000\002\014" +
    "\003\000\002\014\004\000\002\021\004\000\002\021\004" +
    "\000\002\021\004\000\002\022\003\000\002\022\003\000" +
    "\002\015\003\000\002\015\005\000\002\015\010\000\002" +
    "\026\004\000\002\020\003\000\002\020\004\000\002\016" +
    "\003\000\002\016\005\000\002\024\003\000\002\024\005" +
    "\000\002\017\004\000\002\017\002\000\002\023\004\000" +
    "\002\030\003\000\002\030\003\000\002\030\002\000\002" +
    "\027\003\000\002\034\002\000\002\027\005\000\002\025" +
    "\003\000\002\025\003" });

  /** Access to production table. */
  public short[][] production_table() {return _production_table;}

  /** Parse-action table. */
  protected static final short[][] _action_table = 
    unpackFromStrings(new String[] {
    "\000\104\000\024\003\015\004\016\016\025\017\013\020" +
    "\014\022\022\033\005\034\024\035\011\001\002\000\026" +
    "\002\ufffa\003\ufffa\004\ufffa\016\ufffa\017\ufffa\020\ufffa\022" +
    "\ufffa\033\ufffa\034\ufffa\035\ufffa\001\002\000\026\002\ufff6" +
    "\003\ufff6\004\ufff6\016\ufff6\017\ufff6\020\ufff6\022\ufff6\033" +
    "\ufff6\034\ufff6\035\ufff6\001\002\000\026\002\ufff3\003\ufff3" +
    "\004\ufff3\016\ufff3\017\ufff3\020\ufff3\022\ufff3\033\ufff3\034" +
    "\ufff3\035\ufff3\001\002\000\026\002\ufff5\003\ufff5\004\ufff5" +
    "\016\ufff5\017\ufff5\020\ufff5\022\ufff5\033\ufff5\034\ufff5\035" +
    "\ufff5\001\002\000\026\002\ufffd\003\ufffd\004\ufffd\016\ufffd" +
    "\017\ufffd\020\ufffd\022\ufffd\033\ufffd\034\ufffd\035\ufffd\001" +
    "\002\000\026\002\ufff7\003\ufff7\004\ufff7\016\ufff7\017\ufff7" +
    "\020\ufff7\022\ufff7\033\ufff7\034\ufff7\035\ufff7\001\002\000" +
    "\026\002\ufff4\003\ufff4\004\ufff4\016\ufff4\017\ufff4\020\ufff4" +
    "\022\ufff4\033\ufff4\034\ufff4\035\ufff4\001\002\000\010\006" +
    "\uffcf\032\050\033\046\001\002\000\014\006\uffcf\013\uffcf" +
    "\023\uffcf\032\050\033\046\001\002\000\004\006\103\001" +
    "\002\000\026\002\ufff8\003\ufff8\004\ufff8\016\ufff8\017\ufff8" +
    "\020\ufff8\022\ufff8\033\ufff8\034\ufff8\035\ufff8\001\002\000" +
    "\006\006\101\013\102\001\002\000\026\002\ufffe\003\ufffe" +
    "\004\ufffe\016\ufffe\017\ufffe\020\ufffe\022\ufffe\033\ufffe\034" +
    "\ufffe\035\ufffe\001\002\000\026\002\ufffb\003\ufffb\004\ufffb" +
    "\016\ufffb\017\ufffb\020\ufffb\022\ufffb\033\ufffb\034\ufffb\035" +
    "\ufffb\001\002\000\026\002\ufffc\003\ufffc\004\ufffc\016\ufffc" +
    "\017\ufffc\020\ufffc\022\ufffc\033\ufffc\034\ufffc\035\ufffc\001" +
    "\002\000\010\006\uffef\013\uffef\023\044\001\002\000\026" +
    "\002\ufff9\003\ufff9\004\ufff9\016\ufff9\017\ufff9\020\ufff9\022" +
    "\ufff9\033\ufff9\034\ufff9\035\ufff9\001\002\000\010\006\uffe7" +
    "\012\034\030\032\001\002\000\026\002\uffff\003\uffff\004" +
    "\uffff\016\uffff\017\uffff\020\uffff\022\uffff\033\uffff\034\uffff" +
    "\035\uffff\001\002\000\026\002\030\003\015\004\016\016" +
    "\025\017\013\020\014\022\022\033\005\034\024\035\011" +
    "\001\002\000\004\002\001\001\002\000\026\002\000\003" +
    "\000\004\000\016\000\017\000\020\000\022\000\033\000" +
    "\034\000\035\000\001\002\000\006\006\uffe8\031\040\001" +
    "\002\000\004\006\037\001\002\000\004\021\035\001\002" +
    "\000\004\014\036\001\002\000\026\002\uffe6\003\uffe6\004" +
    "\uffe6\016\uffe6\017\uffe6\020\uffe6\022\uffe6\033\uffe6\034\uffe6" +
    "\035\uffe6\001\002\000\026\002\uffea\003\uffea\004\uffea\016" +
    "\uffea\017\uffea\020\uffea\022\uffea\033\uffea\034\uffea\035\uffea" +
    "\001\002\000\004\006\uffe9\001\002\000\012\006\uffde\007" +
    "\055\013\uffde\023\uffd8\001\002\000\004\023\044\001\002" +
    "\000\006\006\uffe5\013\uffe5\001\002\000\016\006\uffcf\007" +
    "\uffcf\013\uffcf\023\uffcf\032\050\033\046\001\002\000\006" +
    "\006\uffee\013\uffee\001\002\000\024\006\uffd0\007\uffd0\010" +
    "\uffd0\011\uffd0\013\uffd0\023\uffd0\025\uffd0\026\uffd0\027\uffd0" +
    "\001\002\000\024\006\uffd1\007\uffd1\010\uffd1\011\uffd1\013" +
    "\uffd1\023\uffd1\025\uffd1\026\uffd1\027\uffd1\001\002\000\026" +
    "\006\uffce\007\uffce\010\uffce\011\uffce\013\uffce\023\uffce\025" +
    "\uffce\026\uffce\027\uffce\032\uffcd\001\002\000\012\006\uffdb" +
    "\007\uffdb\013\uffdb\023\uffdb\001\002\000\004\032\050\001" +
    "\002\000\024\006\uffcc\007\uffcc\010\uffcc\011\uffcc\013\uffcc" +
    "\023\uffcc\025\uffcc\026\uffcc\027\uffcc\001\002\000\006\006" +
    "\uffe4\013\uffe4\001\002\000\014\010\060\011\064\025\061" +
    "\026\056\027\062\001\002\000\026\006\uffcf\010\uffcf\011" +
    "\uffcf\013\uffcf\023\uffcf\025\uffcf\026\uffcf\027\uffcf\032\050" +
    "\033\046\001\002\000\022\006\uffdd\010\060\011\064\013" +
    "\uffdd\023\uffd6\025\061\026\056\027\062\001\002\000\030" +
    "\006\uffcb\010\uffcb\011\uffcb\013\uffcb\023\uffcb\024\uffcb\025" +
    "\uffcb\026\uffcb\027\uffcb\032\uffcb\033\uffcb\001\002\000\026" +
    "\006\uffcf\010\uffcf\011\uffcf\013\uffcf\023\uffcf\025\uffcf\026" +
    "\uffcf\027\uffcf\032\050\033\046\001\002\000\026\006\uffcf" +
    "\010\uffcf\011\uffcf\013\uffcf\023\uffcf\025\uffcf\026\uffcf\027" +
    "\uffcf\032\050\033\046\001\002\000\022\006\uffda\010\uffda" +
    "\011\uffda\013\uffda\023\uffda\025\uffda\026\uffda\027\uffda\001" +
    "\002\000\030\006\uffca\010\uffca\011\uffca\013\uffca\023\uffca" +
    "\024\uffca\025\uffca\026\uffca\027\uffca\032\uffca\033\uffca\001" +
    "\002\000\004\023\uffd7\001\002\000\010\010\uffd3\011\uffd3" +
    "\024\uffd3\001\002\000\010\010\060\011\064\024\071\001" +
    "\002\000\014\006\uffcf\013\uffcf\023\uffd5\032\050\033\046" +
    "\001\002\000\010\010\uffd4\011\uffd4\024\uffd4\001\002\000" +
    "\006\006\uffdc\013\uffdc\001\002\000\022\006\uffe1\010\uffe1" +
    "\011\uffe1\013\uffe1\023\uffe1\025\uffe1\026\uffe1\027\uffe1\001" +
    "\002\000\022\006\uffe2\010\uffe2\011\uffe2\013\uffe2\023\uffe2" +
    "\025\uffe2\026\uffe2\027\uffe2\001\002\000\022\006\uffd9\010" +
    "\uffd9\011\uffd9\013\uffd9\023\uffd9\025\uffd9\026\uffd9\027\uffd9" +
    "\001\002\000\022\006\uffdf\010\uffdf\011\uffdf\013\uffdf\023" +
    "\uffdf\025\uffdf\026\uffdf\027\uffdf\001\002\000\022\006\uffe0" +
    "\010\uffe0\011\uffe0\013\uffe0\023\uffe0\025\uffe0\026\uffe0\027" +
    "\uffe0\001\002\000\022\006\uffe3\010\uffe3\011\uffe3\013\uffe3" +
    "\023\uffe3\025\uffe3\026\uffe3\027\uffe3\001\002\000\026\002" +
    "\ufff2\003\ufff2\004\ufff2\016\ufff2\017\ufff2\020\ufff2\022\ufff2" +
    "\033\ufff2\034\ufff2\035\ufff2\001\002\000\026\002\ufff0\003" +
    "\ufff0\004\ufff0\016\ufff0\017\ufff0\020\ufff0\022\ufff0\033\ufff0" +
    "\034\ufff0\035\ufff0\001\002\000\026\002\uffeb\003\uffeb\004" +
    "\uffeb\016\uffeb\017\uffeb\020\uffeb\022\uffeb\033\uffeb\034\uffeb" +
    "\035\uffeb\001\002\000\010\006\uffed\013\uffed\023\uffed\001" +
    "\002\000\004\006\106\001\002\000\026\002\uffec\003\uffec" +
    "\004\uffec\016\uffec\017\uffec\020\uffec\022\uffec\033\uffec\034" +
    "\uffec\035\uffec\001\002" });

  /** Access to parse-action table. */
  public short[][] action_table() {return _action_table;}

  /** <code>reduce_goto</code> table. */
  protected static final short[][] _reduce_table = 
    unpackFromStrings(new String[] {
    "\000\104\000\030\002\026\003\025\004\017\005\006\006" +
    "\011\007\007\010\003\011\020\013\016\031\022\033\005" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\006\027\046\030\104\001\001\000" +
    "\006\027\046\030\103\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\012\014\044\015\042\016\041" +
    "\026\040\001\001\000\002\001\001\000\004\012\032\001" +
    "\001\000\002\001\001\000\026\003\030\004\017\005\006" +
    "\006\011\007\007\010\003\011\020\013\016\031\022\033" +
    "\005\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\012\014\053\015\042\016\041\026" +
    "\040\001\001\000\002\001\001\000\006\027\046\030\050" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\004\034\051\001\001\000\002\001\001\000\004" +
    "\027\052\001\001\000\002\001\001\000\002\001\001\000" +
    "\012\020\056\021\062\024\064\025\065\001\001\000\006" +
    "\027\046\030\077\001\001\000\010\021\076\022\074\025" +
    "\075\001\001\000\002\001\001\000\006\027\046\030\073" +
    "\001\001\000\006\027\046\030\072\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\004\017\066" +
    "\001\001\000\004\025\067\001\001\000\006\027\046\030" +
    "\071\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001" });

  /** Access to <code>reduce_goto</code> table. */
  public short[][] reduce_table() {return _reduce_table;}

  /** Instance of action encapsulation class. */
  protected CUP$ParserCup$actions action_obj;

  /** Action encapsulation object initializer. */
  protected void init_actions()
    {
      action_obj = new CUP$ParserCup$actions(this);
    }

  /** Invoke a user supplied parse action. */
  public java_cup.runtime.Symbol do_action(
    int                        act_num,
    java_cup.runtime.lr_parser parser,
    java.util.Stack            stack,
    int                        top)
    throws java.lang.Exception
  {
    /* call code in generated class */
    return action_obj.CUP$ParserCup$do_action(act_num, parser, stack, top);
  }

  /** Indicates start state. */
  public int start_state() {return 0;}
  /** Indicates start production. */
  public int start_production() {return 0;}

  /** <code>EOF</code> Symbol index. */
  public int EOF_sym() {return 0;}

  /** <code>error</code> Symbol index. */
  public int error_sym() {return 1;}




	/**
	 * A local reference to the ParserHandler.
	 */
	private ParserHandler ph;
	
	/**
	 * Receives the ParserHandler were the callback methods will be invoked.
	 */
	public void setCallBack (ParserHandler ph) {
		this.ph = ph;
	}

	/**
	 * Sets the ParserHandler of the action manager before processing any symbol.
	 */
	public void user_init() {
		action_obj.setHandler(ph);	
	}
	
	
	public void	report_fatal_error(final String message, final Object info){
		ph.reportRemainingElements();		
	}
	
	public void	report_error(final String message, final Object info){

	}
	


}

/** Cup generated class to encapsulate user supplied action code.*/
class CUP$ParserCup$actions {

    

	/**
	 * A local reference of the ParserHandler in the action manager.
	 */
	private ParserHandler ph; 
	
	/**
	 * It sets the ParserHandler for this action manager.
	 */
	public void setHandler (final ParserHandler ph) {
		this.ph = ph;
	}
	
	/**
	 * This idicates whether the las tag was successfully created or not
	 */	
	private static boolean lastStartTagCreatedOk;
	
	public boolean isLastStartTagCreatedOk(){
		return lastStartTagCreatedOk;
	}

  private final ParserCup parser;

  /** Constructor */
  CUP$ParserCup$actions(ParserCup parser) {
    this.parser = parser;
  }

  /** Method with the actual generated action code. */
  public final java_cup.runtime.Symbol CUP$ParserCup$do_action(
    int                        CUP$ParserCup$act_num,
    java_cup.runtime.lr_parser CUP$ParserCup$parser,
    java.util.Stack            CUP$ParserCup$stack,
    int                        CUP$ParserCup$top)
    throws java.lang.Exception
    {
      /* Symbol object for return from actions */
      java_cup.runtime.Symbol CUP$ParserCup$result;

      /* select the action based on the action number */
      switch (CUP$ParserCup$act_num)
        {
          /*. . . . . . . . . . . . . . . . . . . .*/
          case 55: // qm ::= SQM 
            {
              Character RESULT = null;
		int quotemarkleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int quotemarkright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Character quotemark = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		
					RESULT = quotemark;
				
              CUP$ParserCup$result = new java_cup.runtime.Symbol(19/*qm*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 54: // qm ::= DQM 
            {
              Character RESULT = null;
		int quotemarkleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int quotemarkright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Character quotemark = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		
					RESULT = quotemark;

				
              CUP$ParserCup$result = new java_cup.runtime.Symbol(19/*qm*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 53: // lexicalerrors ::= LEXERR NT$0 lexicalerrors 
            {
              List<String> RESULT = null;
              // propagate RESULT from NT$0
              if ( ((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value != null )
                RESULT = (List<String>) ((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
		String error1 = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
		int error2left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error2right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error2 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		
			  			RESULT.addAll(error2);
			  		
              CUP$ParserCup$result = new java_cup.runtime.Symbol(21/*lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 52: // NT$0 ::= 
            {
              Object RESULT = null;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String error1 = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;

				  		List<String> list = new ArrayList<String>();
						list.add(error1);
						RESULT = list;
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(26/*NT$0*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 51: // lexicalerrors ::= LEXERR 
            {
              List<String> RESULT = null;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String error1 = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
							
						List<String> list = new ArrayList<String>();
						list.add(error1);
						RESULT = list;
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(21/*lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 50: // optional_lexicalerrors ::= 
            {
              List<String> RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(22/*optional_lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 49: // optional_lexicalerrors ::= EOFTK 
            {
              List<String> RESULT = null;
		int tokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int tokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String token = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(22/*optional_lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 48: // optional_lexicalerrors ::= lexicalerrors 
            {
              List<String> RESULT = null;
		int error2left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error2right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error2 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
														
								RESULT = error2;
							
              CUP$ParserCup$result = new java_cup.runtime.Symbol(22/*optional_lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 47: // attrval_lit ::= ATTRVAL_LIT optional_lexicalerrors 
            {
              Pair<Object,List<String>> RESULT = null;
		int nextLitleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int nextLitright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String nextLit = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(17/*attrval_lit*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 46: // literal ::= 
            {
              String RESULT = null;
		 RESULT = new String (""); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(13/*literal*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 45: // literal ::= literal ATTRVAL_LIT 
            {
              String RESULT = null;
		int prevLitleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int prevLitright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String prevLit = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int nextLitleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int nextLitright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String nextLit = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = prevLit + nextLit; 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(13/*literal*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 44: // mult_attr_value ::= qm literal qm 
            {
              Pair<Object,List<String>> RESULT = null;
		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String attrValue = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		 
					  	
					  	RESULT = new Pair(attrValue, new ArrayList());
              CUP$ParserCup$result = new java_cup.runtime.Symbol(18/*mult_attr_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 43: // mult_attr_value ::= single_attr_value 
            {
              Pair<Object,List<String>> RESULT = null;
		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Pair<Object,List<String>> attrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = attrValue; 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(18/*mult_attr_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 42: // mult_attr ::= attribute_name EQUALS mult_attr_value 
            {
              HTMLAttributeList RESULT = null;
		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Pair<Object,List<String>> attrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
			
					List<String> array= new ArrayList<String>();
					
						if(attrName.getSecond()!=null)
							array.addAll(attrName.getSecond());
						if(attrValue.getSecond()!=null)
							array.addAll(attrValue.getSecond());					 	
					 RESULT = new HTMLAttributeList (attrName.getFirst(), attrValue.getFirst(), attrNameright, attrValueright, null,attrName.getSecond()); 

					
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(12/*mult_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 41: // mult_attr ::= attribute_name 
            {
              HTMLAttributeList RESULT = null;
		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = new HTMLAttributeList (attrName.getFirst(), null, attrNameleft, attrNameright, null,attrName.getSecond()); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(12/*mult_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 40: // single_attr_value ::= single_attr_value any_value 
            {
              Pair<Object,List<String>> RESULT = null;
		int prevAttrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int prevAttrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		Pair<Object,List<String>> prevAttrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int newAttrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int newAttrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Pair<Object,List<String>> newAttrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 
					  	List<String> array= new ArrayList<String>();					
						if(prevAttrValue!=null && prevAttrValue.getSecond()!=null) {
							array.addAll(prevAttrValue.getSecond());
						}
						if(newAttrValue!=null && newAttrValue.getSecond()!=null) {
							array.addAll(newAttrValue.getSecond());					
						}	  	
					  	Pair<Object,List<String>> pair = new Pair<Object,List<String>>((prevAttrValue !=null ?prevAttrValue.getFirst().toString() : "") + (newAttrValue!=null ? newAttrValue.getFirst().toString() : ""),array);
					  	RESULT = pair;
					  	
              CUP$ParserCup$result = new java_cup.runtime.Symbol(14/*single_attr_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 39: // single_attr_value ::= any_no_lit 
            {
              Pair<Object,List<String>> RESULT = null;
		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Pair<Object,List<String>> attrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = attrValue; 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(14/*single_attr_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 38: // attribute_name ::= ATTR_NAME optional_lexicalerrors 
            {
              Pair<String,List<String>> RESULT = null;
		int attrNameTkleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int attrNameTkright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String attrNameTk = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 					
						RESULT = new Pair(attrNameTk,error1 );
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(20/*attribute_name*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 37: // single_attr ::= attribute_name EQUALS qm literal qm optional_lexicalerrors 
            {
              HTMLAttributeList RESULT = null;
		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-5)).left;
		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-5)).right;
		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-5)).value;
		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
		String attrValue = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 
				  		List<String> array= new ArrayList<String>();
						
						if(attrName.getSecond()!=null) {
							array.addAll(attrName.getSecond()); 
						}
						if(error1!=null) {
							array.addAll(error1);				  		
						}
				  		RESULT = new HTMLAttributeList (attrName.getFirst(), attrValue, attrNameleft, attrValueright, null,array);
				  		 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(11/*single_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-5)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 36: // single_attr ::= attribute_name EQUALS single_attr_value 
            {
              HTMLAttributeList RESULT = null;
		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Pair<Object,List<String>> attrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		  			  		  				  		
						List<String> array= new ArrayList<String>();
						
						if(attrName.getSecond()!=null) {
							array.addAll(attrName.getSecond());
						}
						if(attrValue.getSecond()!=null) {
							array.addAll(attrValue.getSecond());
						}
  				  		RESULT = new HTMLAttributeList (attrName.getFirst(), attrValue.getFirst(), attrNameleft, attrValueright, null,array);
  				  		
              CUP$ParserCup$result = new java_cup.runtime.Symbol(11/*single_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 35: // single_attr ::= attribute_name 
            {
              HTMLAttributeList RESULT = null;
		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = new HTMLAttributeList (attrName.getFirst(), null, attrNameleft, attrNameright, null,attrName.getSecond()); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(11/*single_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 34: // any_value ::= qm 
            {
              Pair<Object,List<String>> RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(16/*any_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 33: // any_value ::= any_no_lit 
            {
              Pair<Object,List<String>> RESULT = null;
		int anyValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int anyValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Pair<Object,List<String>> anyValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = anyValue; 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(16/*any_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 32: // any_no_lit ::= ATTRVAL_NUM optional_lexicalerrors 
            {
              Pair<Object,List<String>> RESULT = null;
		int attrValueTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int attrValueTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String attrValueToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
			
						RESULT = new Pair(attrValueToken,error1); 
					 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(15/*any_no_lit*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 31: // any_no_lit ::= ATTRVAL_NMTK optional_lexicalerrors 
            {
              Pair<Object,List<String>> RESULT = null;
		int attrValueTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int attrValueTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String attrValueToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		  						
 						RESULT = new Pair(attrValueToken,error1);
 					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(15/*any_no_lit*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 30: // any_no_lit ::= ATTRVAL_NUMTK optional_lexicalerrors 
            {
              Pair<Object,List<String>> RESULT = null;
		int attrValueTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int attrValueTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String attrValueToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 
						RESULT = new Pair(attrValueToken,error1);
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(15/*any_no_lit*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 29: // atts ::= mult_attr atts 
            {
              HTMLAttributeList RESULT = null;
		int attrleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int attrright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		HTMLAttributeList attr = (HTMLAttributeList)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int attrListleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attrListright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		HTMLAttributeList attrList = (HTMLAttributeList)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 attr.setNext (attrList);
					   RESULT =  attr;
				 	
              CUP$ParserCup$result = new java_cup.runtime.Symbol(10/*atts*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 28: // atts ::= single_attr 
            {
              HTMLAttributeList RESULT = null;
		int attrleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attrright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		HTMLAttributeList attr = (HTMLAttributeList)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = attr; 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(10/*atts*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 27: // comment ::= TAG_OPEN_EXM COMM COMM_CONTENT TAG_COMM_CLOSE 
            {
              Object RESULT = null;
		int initTagleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-3)).left;
		int initTagright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-3)).right;
		String initTag = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-3)).value;
		int commleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
		int commright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
		String comm = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
		int commTextleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int commTextright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String commText = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String closeToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 ph.iHaveNewComment(new HTMLComment(
											commText, 
											initTagleft,
											initTagright));	
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(6/*comment*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-3)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 26: // markup_content ::= 
            {
              Pair<String,String> RESULT = null;
		 RESULT = new Pair<String, String> (null, null); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(8/*markup_content*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 25: // markup_content ::= MUDECL 
            {
              Pair<String,String> RESULT = null;
		int mkDeclleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int mkDeclright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String mkDecl = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = new Pair<String, String> (mkDecl, null); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(8/*markup_content*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 24: // markup_content ::= MUDECL MUDECL_CONTENT 
            {
              Pair<String,String> RESULT = null;
		int mkDeclleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int mkDeclright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String mkDecl = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int mkContleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int mkContright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String mkCont = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 RESULT = new Pair<String, String> (mkDecl, mkCont); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(8/*markup_content*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 23: // markup ::= TAG_OPEN_EXM markup_content TAG_CLOSE 
            {
              Object RESULT = null;
		int initTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
		int initTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
		String initToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
		int mkContentleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int mkContentright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		Pair<String,String> mkContent = (Pair<String,String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Character closeToken = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 ph.iHaveNewMarkup (new HTMLMarkup(
											mkContent.getFirst(),
											mkContent.getSecond(),
											initTokenleft));
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(7/*markup*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 22: // eelem ::= error TAG_CLOSE 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(5/*eelem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 21: // eelem ::= END_TAG_NAME optional_lexicalerrors TAG_CLOSE 
            {
              Object RESULT = null;
		int initTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
		int initTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
		String initToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Character closeToken = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 
					if(error1!=null){
						ph.iHaveNewError(HTMLErrorType.ERR_EXPECTED,"\'>\'",null,null);					
					} 
					ph.iHaveNewEndTag(new HTMLTag(HTMLTagType.END, initToken, null, initTokenleft, closeTokenleft,  initTokenleft));
				   
              CUP$ParserCup$result = new java_cup.runtime.Symbol(5/*eelem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 20: // tag_name ::= TAG_NAME optional_lexicalerrors 
            {
              String RESULT = null;
		int startElemTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int startElemTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String startElemToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 
					if(error1!=null){
					for(String s:error1){
						ph.iHaveNewError(HTMLErrorType.ERR_INVALID_TAG_CHAR,s,startElemToken,null);				
					}							
				}
				RESULT = startElemToken;
				
              CUP$ParserCup$result = new java_cup.runtime.Symbol(23/*tag_name*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 19: // tag_info ::= tag_name atts 
            {
              Pair<String,HTMLAttributeList> RESULT = null;
		int startElemTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int startElemTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		String startElemToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int attributesleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int attributesright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		HTMLAttributeList attributes = (HTMLAttributeList)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		
					if(attributes.getError() != null){
						for(String s:attributes.getError()){
							ph.iHaveNewError(HTMLErrorType.ERR_INVALID_TAG_CHAR,s,startElemToken,null);							
						}
						/*if(attributes.getAttributeValue()!=null)
								ph.iHaveNewError(HTMLErrorType.ERR_ATTVALERR,null,null,null);*/
					}

					RESULT = new Pair<String, HTMLAttributeList> (startElemToken, attributes); 
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(9/*tag_info*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 18: // tag_info ::= tag_name 
            {
              Pair<String,HTMLAttributeList> RESULT = null;
		int startElemTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int startElemTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String startElemToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 	RESULT = new Pair<String, HTMLAttributeList> (startElemToken, null); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(9/*tag_info*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 17: // simple_tag ::= tag_info TAG_SLASH_CLOSE 
            {
              Object RESULT = null;
		int tagInfoleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int tagInforight = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		Pair<String,HTMLAttributeList> tagInfo = (Pair<String,HTMLAttributeList>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String closeToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 ph.iHaveNewStartTag(new HTMLTag(HTMLTagType.SIMPLE, tagInfo.getFirst(), tagInfo.getSecond(), tagInfoleft, closeTokenleft, tagInforight)); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(4/*simple_tag*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 16: // tag_open ::= TAG_OPEN optional_lexicalerrors 
            {
              Character RESULT = null;
		int initTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int initTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		Character initToken = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		
					if(error1 != null){
						for(String s:error1){
							ph.iHaveNewError(HTMLErrorType.ERR_EXPECTED_TAGNAME,null,null,null);
						}
					}
					
					RESULT = initToken;
				
              CUP$ParserCup$result = new java_cup.runtime.Symbol(24/*tag_open*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // start_tag ::= tag_info TAG_CLOSE 
            {
              Object RESULT = null;
		int tagInfoleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int tagInforight = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		Pair<String,HTMLAttributeList> tagInfo = (Pair<String,HTMLAttributeList>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		Character closeToken = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 					
					lastStartTagCreatedOk=true;								// So that the lexer can ask if this was true. Curently, it will always be so, we should write															
					lastStartTagCreatedOk=true;								// So that the lexer can ask if this was true. Curently, it will always be so, we should write
					ph.iHaveNewStartTag(new HTMLTag(HTMLTagType.START, tagInfo.getFirst(), tagInfo.getSecond(), tagInfoleft, closeTokenleft, tagInforight)); 
					
              CUP$ParserCup$result = new java_cup.runtime.Symbol(3/*start_tag*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 14: // selem ::= bad_tag_open 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(2/*selem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // selem ::= simple_tag 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(2/*selem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 12: // selem ::= start_tag 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(2/*selem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // data ::= EOFTK 
            {
              Object RESULT = null;
		int eofTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int eofTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String eofToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		  
					/* finalize the parsing "by hand" */
					try {
						parser.done_parsing();
					} catch (Throwable e) {			
						ph.iHaveNewError(HTMLErrorType.ERR_THROWABLE, eofToken,null,null);
					} 
				  
              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 10: // data ::= LEXERR_EXPECTED_TAG_NAME 
            {
              Object RESULT = null;
		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String error1 = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		
				  	ph.iHaveNewError(HTMLErrorType.ERR_EXPECTED_TAGNAME,null,null,null);
				  
              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // data ::= SYNC 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 8: // data ::= EOF_LITERAL 
            {
              Object RESULT = null;
		int textoleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int textoright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		String texto = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		ph.iHaveNewError(HTMLErrorType.ERR_EOF_LITERAL,texto,null,null);
              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // data ::= comment 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // data ::= markup 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 5: // data ::= TEXT 
            {
              Object RESULT = null;
		int textTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
		int textTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
		HTMLText textToken = (HTMLText)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
		 ph.iHaveNewText(textToken); 
              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 4: // data ::= eelem 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // data ::= selem 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // doc ::= data 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(0/*doc*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 1: // doc ::= doc data 
            {
              Object RESULT = null;

              CUP$ParserCup$result = new java_cup.runtime.Symbol(0/*doc*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          return CUP$ParserCup$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 0: // $START ::= doc EOF 
            {
              Object RESULT = null;
		int start_valleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
		int start_valright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
		Object start_val = (Object)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
		RESULT = start_val;
              CUP$ParserCup$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
            }
          /* ACCEPT */
          CUP$ParserCup$parser.done_parsing();
          return CUP$ParserCup$result;

          /* . . . . . .*/
          default:
            throw new Exception(Messages.getString("swing.04")); //$NON-NLS-1$

        }
    }
}


